home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / giochi / muiempir.lha / source / muigui.c < prev   
C/C++ Source or Header  |  1995-07-23  |  4KB  |  146 lines

  1. #include "defines.h"
  2. #include "guidefines.h"
  3. #include "struct.h"
  4. #include "externalprototypes.h"
  5.  
  6. extern ULONG signals;
  7. extern APTR app,tx1;
  8. extern struct MsgPort *client;
  9. ULONG guiinput(void);
  10. int guiset(struct MsgPort *client,LONG datasize,LONG object,LONG method,LONG data); 
  11. int guiget(struct MsgPort *client,LONG datatype,LONG object,LONG method,APTR data); 
  12. int guiDoMethod(struct MsgPort *client, LONG message,LONG pointerlength,LONG object,ULONG data,...);
  13. extern LONG guiRequest(LONG);
  14. void clientsetup(struct MsgPort *);
  15. int  changeplayer(void);
  16. void clientsetup(struct MsgPort *client) {return;}
  17.  
  18. ULONG guiinput ()
  19. {
  20.     
  21.   return(DoMethod(app,MUIM_Application_Input,&signals));
  22.  
  23. }
  24.  
  25. int guiset(struct MsgPort *client,LONG datasize,LONG object,LONG method,LONG data) {
  26.  
  27. LONG address;
  28. APTR *pointer;
  29.   
  30.   if (!object) return(0);
  31.   address = (LONG)&tx1;
  32.   
  33.   
  34.   address += object*sizeof(LONG); /* first object */     
  35.   pointer  = (APTR *)address;
  36.   set(*pointer,method,data);
  37.     
  38.   return(0);
  39. }  
  40.  
  41. int guiget(struct MsgPort *client,LONG datatype,LONG object,LONG method,APTR data) {
  42.  
  43. LONG address;
  44. APTR *pointer;
  45.   
  46.   if (!object) return (0);
  47.   address = (LONG)&tx1;
  48.   
  49.   address += object*sizeof(LONG); /* first object */     
  50.   pointer  = (APTR *)address;
  51.   get(*pointer,method,data);
  52.     
  53.   return(0);
  54.  
  55. int guiDoMethod(struct MsgPort *client, LONG message, LONG pointerlength,LONG object,ULONG data,...) {
  56.  
  57. LONG address;
  58. APTR *pointer;
  59.  
  60.   if (!object) return (0);
  61.   address = (LONG)&tx1;
  62.  
  63.   address += object*sizeof(LONG); /* first object */
  64.   pointer  = (APTR *)address;
  65.   DoMethodA(*pointer,(Msg)&data); 
  66.   
  67.   return(0);
  68. }
  69.   
  70. int changeplayer() {
  71.   
  72.   int x,n,m;
  73.   char *p;
  74.   struct TagItem *tag,*tstate;
  75.   struct ship *tempship;
  76.   struct player *player;
  77.   struct tagchar *cargo = NULL,cargotag;
  78.   
  79.   if (!client) cleandisplay();
  80.   
  81.   if ((playernumber > 1) && (client == 0)) {
  82.     guiset(client,INT,WI_MOVEMENT,MUIA_Window_Open,FALSE);
  83.     guiset(client,INT,WI_FLEETCARGO,MUIA_Window_Open,FALSE);
  84.     guiset(client,INT,WI_MAP,MUIA_Window_Open,FALSE);
  85.   }
  86.   currentfleet = currentplayer->nextfleet;
  87.   for (x=0;x<planetnumber;x++) {
  88.     n=planetlist[currentplayer->id][x].x;
  89.     m=planetlist[currentplayer->id][x].y;
  90.     p = planetlist[currentplayer->id][x].name;
  91.     SECTOR[n][m].PLANET=&planetlist[currentplayer->id][x];
  92.     guiDoMethod(client,GUI_DOMETHODGET5,SMALLSTRING,LV3,MUIM_List_Insert,&p,1,MUIV_List_Insert_Bottom);
  93.     }
  94.   x = findplanet(-1,1);
  95.   
  96.   currentplayer->currentplanet = &planetlist[currentplayer->id][x];
  97.   fromx = planetlist[0][x].x;
  98.   fromy = planetlist[0][x].y;
  99.   
  100.   if (x>=0) guiset(client,INT,BT_PURCHASE,MUIA_Disabled,FALSE);
  101.   else guiset(client,INT,BT_PURCHASE,MUIA_Disabled,TRUE);
  102.   
  103.   purchase(x);
  104.   displayplanet(x);
  105.   selectplanets();
  106.   display(currentplayer);
  107.   fleetlist(currentplayer->nextfleet);
  108.   displayfleet(currentplayer->nextfleet);
  109.   displaymessages(currentplayer);
  110.   if (currentplayer->next==NULL) guiset(client,SMALLSTRING,BT_NEXTPLAYER,MUIA_Text_Contents,"End Turn");
  111.   else guiset(client,SMALLSTRING,BT_NEXTPLAYER,MUIA_Text_Contents,"Next Player");
  112.      
  113.   /* insert ship information */
  114.   tstate = currentplayer->fleettag;
  115.   guiDoMethod(client,GUI_DOMETHODGET3,0,LV11,MUIM_List_Clear,TRUE); 
  116.   while (tag = NextTagItem (&tstate)) {
  117.     tempship = (struct ship *) tag->ti_Data;
  118.     guiDoMethod(client,GUI_DOMETHODGET5,SHIP,LV11,MUIM_List_Insert,&tempship,1,MUIV_List_Insert_Top);
  119.     } 
  120.   
  121.   guiset(client,INT,LV18,MUIA_List_Quiet,TRUE);
  122.   guiDoMethod(client,GUI_DOMETHODGET3,0,LV18,MUIM_List_Clear,TRUE);
  123.   player = headplayer;  
  124.   while (player) {
  125.      if (currentplayer->id != player->id) {
  126.        strcpy(cargotag.name,player->empire);
  127.        cargotag.tagdata = player->id;
  128.        cargotag.tagname = (ULONG) player;
  129.        cargo = &cargotag;
  130.        guiDoMethod(client,GUI_DOMETHODGET5,CARGO,LV18,MUIM_List_Insert,&cargo,1,MUIV_List_Insert_Bottom);
  131.      }
  132.      player = player->next;  
  133.   }
  134.   guiset(client,INT,LV18,MUIA_List_Quiet,FALSE);
  135.   if(!currentfleet) guiset(NULL,INT,BT_MOVEMENT,MUIA_Disabled,TRUE);
  136.   else guiset(NULL,INT,BT_MOVEMENT,MUIA_Disabled,FALSE);  
  137.   guiset(NULL,INT,WI_MAINWINDOW,MUIA_Window_Open,TRUE);
  138.   guiset(NULL,INT,WI_MESSAGES,MUIA_Window_Open,TRUE);
  139.   guiDoMethod(NULL,GUI_DOMETHODGET3,0,MYOBJ, MUIM_MyObjRedraw,TRUE);
  140.  
  141.   guiRequest(9);  
  142.   setdisplay(); 
  143.   return(0);
  144. }
  145.